#include<iostream>
#include<vector>
#include<string>
using namespace std;

//公共数据区
class pig{
public:
    pig(){
        this->blood=4;
        this->jump=0;
    }
    int blood;//体力
    vector<char>pai;//牌
    int name; //1 主 2忠 3反
    int jump; //0 无 1忠 2类反 3反

};

int pai_num=0;
int pai_total_num=0;
vector<int>pais;

int pig_num=0;
vector<pig>pigs;

//公共区调用函数
int next(int i);         //逆时针获取下一个编号
string get_pai();        //获取能够获得的手牌
void action(int place);  //执行动作主函数
vector<int> count_pai(int place, char pai);  //数牌的量,返回所有牌的坐标

int main(){

}

//公共区调用函数
int next(int i){
    if(i==pig_num-1){
        i=0;
        return i;
    }
    else{
        return i+1;
    }
}

string get_pai(){
    string result=to_string(pais[pai_num]);
    if(pai_num==pai_total_num-1){
        result+=to_string(pais[pai_num]);
    }
    else{
        pai_num+=1;
        result+=to_string(pais[pai_num]);
    }
    return result;
}

vector<int> count_pai(int place, char pai){
    vector<int> num;
    for(int i=0;i<pigs[place].pai.size();i++){
        if(pigs[place].pai[i]==pai){
            num.push_back(i);
        }
    }
    return num;
}



void action(int place){
    //把主猪设置成忠猪形态
    if(pigs[place].name==1)
        pigs[place].jump=1;
    //抓牌
    string my_pai=get_pai();
    pigs[place].pai.push_back(my_pai[0]);
    pigs[place].pai.push_back(my_pai[1]);

    //遍历，出招,小心循环
    vector<int>killed_pai;
    int zgln=0;   //0没有 1没使用 2用过了
    for(int i=0;i<pigs[place].pai.size();i++){
        if(pigs[place].pai[i]=='z'){
            zgln=1;
        }
    }
    for(int i=0;i<pigs[place].pai.size();i++){
        char the_pai=pigs[place].pai[i];
        
        switch(the_pai){
            case 'P':{
                if(pigs[place].blood<4){
                    pigs[place].blood+=1;
                    killed_pai.push_back(i);
                }
                break;
            }
            case 'K':{
                //确定自己的目标对象
                int pig=next(place);
                while(pig!=place){
                    //如果是主猪
                    if((pigs[place].name==1)&&(pigs[pig].jump==2||pigs[pig].jump==3)){
                        break;
                    }
                    //如果是忠猪，寻找反猪，并表忠心
                    else if(pigs[place].name==2&&(pigs[pig].jump==3)){
                        //确立忠心
                        pigs[place].jump=1;
                        break;
                    }
                    //如果是反猪，寻找敌人，并表反心
                    else if(pigs[place].name==3&&(pigs[pig].name==1||pigs[pig].jump==1)){
                        //确立反心
                        pigs[place].jump=3;
                        break;
                    }

                    pig=next(place);
                }
                //确定是不是有打击目标,对pig发起打击
                if(pig==place)break;

                //执行打击之前，进行连弩相关检查
                int fight=1; //打击数量
                
                if(zgln==1){
                    //有弩的处理
                    fight=count_pai(place, 'K').size();
                }
                
                


                //最后，检查是不是要清除过多的连弩
            }
        }
    }

}